package com.cskaoyan.select;

import java.util.Scanner;

/*
        switch语句格式：
        switch(表达式) {
                case 值1：
                      语句体1;
                       break;
                 case 值2：
                       语句体2;
                        break;
                        …
                 default：
                        语句体n+1;
                        break;
         }
       格式解释：
        switch关键字：表示这是一个switch语句
        switch后的表达式：表示选择条件
        case语句：每个case 语句表示一个分支
        beak语句：表示结束switch语句
        default语句：表示当所有其他的case的分支，都不能匹配switch后表达式的值的时候，此时就会执行default分支。
                     有点类似于，多分支if最后一个else


       注意事项：
        1. switch语句后，表达式结果的取值类型？ byte, short, int, char,jdk5以后枚举， JDK7以后可以是：String 字符串
        2. case 后的常量取值？ case后面的值代表固定的情况，只能用常量值表示这种固定的情况，case 后的常量值不能重复
        3. break可以省略吗？ 语法上可以，但是因为break的语句的作用是结束switch语句，所以一旦case 分支种缺少了break
                             就会发生case 穿越：
                             从匹配到的第一个case分支开始，依次执行紧邻的case 分支种的代码，直到遇到了break语句结束整个switch语句
                             或者，匹配到最后一个分支，继续往下执行即执行完毕
                             建议大家如果要实现选择一个分支执行的效果，不要省略break，因为一旦省略就会发生case穿越，没有选择效果了
        4. default可以省略吗？ default只能放到最后吗？
           a. default 可以省略, 但是建议尽可能保留
           b. default 不必必须放在最后，但是如果default没有放在最后，default语句得加上break, 防止case 穿越
        5. switch语句的结束条件
           a. 遇到了break语句，被break语句中止
           b. 匹配到最后一个分支，继续向下执行，执行完switch语句


 */
public class Demo4Switch {


    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        // 接受整数值
        int i = scanner.nextInt();

        switch (i) {
//            default:
//                System.out.println("您输入了出1， 2以外的数");
//                break;
            case 1:
                System.out.println("您输入了1");
                break;
            case 2:
                System.out.println("您输入了2");
                break;
            default:
                System.out.println("您输入了出1， 2以外的数");
        }
    }
}
